#pragma once

/*--------------------------------------------------------------------------*/

#include <functional>



#include "../Runnable/Defs.h"
#include "GLEW/GL/glew.h"

/*--------------------------------------------------------------------------*/

#pragma comment(lib, "GLEW/" OBJ_PLATFORM "/glew32.lib")
#pragma comment(lib, "opengl32.lib")

#define GLM_FORCE_SSE2
#include "glm/glm.hpp"
#include "glm/ext.hpp"
#include "glm/gtc/quaternion.hpp"
#include "glm/gtx/quaternion.hpp"

/*--SOIL--------------------------------------------------------------------*/
#include "../LibSOIL/SOIL.h"
#pragma comment(lib, "LibSOIL" OBJ_SUFIX ".lib")

/*--------------------------------------------------------------------------*/	

#include "IRenderer.h"
#include "Renderer.h"

#include "DynamicSurface.h"

#include "IRendererEvent.h"
#include "BindFramebufferEvent.h"
#include "CopyTextureEvent.h"
#include "RenderQuadEvent.h"
#include "RenderTypeEvent.h"
#include "ClearColorEvent.h"

/*--------------------------------------------------------------------------*/

#include "IRequest.h"
#include "FramebufferRequest.h"
#include "TextureRequest.h"
#include "MaterialRequest.h"
#include "VertexArrayRequest.h"
#include "FontRequest.h"

/*--------------------------------------------------------------------------*/

#include "RBlendState.h"
#include "RRasterizerState.h"
#include "RDepthstencilState.h"
#include "RSamplerState.h"
#include "RTexture.h"
#include "RConst.h"
#include "RFramebuffer.h"
#include "RMaterial.h"
#include "RBuffer.h"
#include "RVertexArray.h"
#include "RFont.h"

/*--------------------------------------------------------------------------*/

#include "TextMgr.h"
#include "RendererStorageMgr.h"
#include "DynGeometryMgr.h"
#include "MaterialMgr.h"
#include "PostprocessMgr.h"
#include "QueueMgr.h"

/*--------------------------------------------------------------------------*/

GLenum ToEnum(const std::string& s);